상속(Inheritance)

✒️ 2025-05-26 18:24 내용 수정


실제 부모가 자식에게 무언가를 물려주는 것처럼, Java에서 부모 역할의 클래스가 자식 역할의 클래스에게 모든 필드와 메서드를 물려주는 것


자식 클래스(하위 클래스, 서브 클래스)

부모 클래스(상위 클래스)의 필드와 메서드를 상속 받는 클래스

class 자식클래스이름 extends 부모클래스이름 {}
class Test {
	private String id; // 상속 불가
	public int test; // 상속 가능
}

생성자 호출

// 부모클래스
class ParentClassName {
	String test;
	public ParentClassName() {
		// 부모 클래스 기본 생성자
	}
	public testMethod() {
		System.out.println("테스트 메서드");
	}
} 

// 부모클래스를 자식클래스로 확장
class ChildClassName extends ParentClassName {
	String exam; // 자식 클래스의 고유 멤버
	
	// 자식 클래스 생성자
	// 시스템에서 실제로 상위 클래스의 생성자를 자동호출 해준다
	public ChildClassName() {
		System.out.pringln("자식클래스");
	}

	public ChildClassName(String test) {
		// 상속받은 필드를 초기화
		this.test = test;
	}
} 
public class InheritanceTest {

	public static void main(String[] args) {

		ChildClassName comic = new ChildClassName();
		// 생성자 호출 시 자동으로 부모 생성자를 호출한다
		// ---출력 내용---
		// 테스트 메서드
		// 자식클래스
	}
}

부모 클래스의 멤버 호출

public Test {
	public int id;
	
	public Test() {
		id = 10;
	}

	public void info() {
		System.out.println("부모 클래스");
	}
}

public Exam extends Test {
	public int id;
	
	public Exam() {
		// 부모 클래스의 생성자 호출
		super();
		this.id = 20;
	}

	@Override
	public void info() {
		// 부모 클래스의 info() 호출
		super.info();
		System.out.println("자식 클래스");
	}
}

상속 제한

class Test {
	public String name;
}

class Exam extends Test {
	public Exam() {}
}

class NewTest extends Test {
	public NewTest() {}
}

상속의 종류

참고 자료 : Geeksforgeeks Inheritance in Java

1. 단일 상속(Single Inheritance)

java_inheritance1.png

public class Parent {}
public class Child extends Parent {}

2. 다층적 상속(Multilevel Inheritance)

java_inheritance2.png

public class Parent {}
public class Child extends Parent {}
public class Descent extends Child {}

3. 계층적 상속(Hierarchical Inheritance)

java_inheritance3.png

public class Person {}
public class Worker extends Person {}
public class Writer extends Person {}

4. 다중 상속(Multiple Inheritance) - Interface

java_inheritance4.png

public interface Parent1 {}
public interface Parent2 {}
public class Child implements Parent1, Parent2 {}

5. 하이브리드 상속(Hybrid Inheritance)

public class Parent {}
public interface Work {}
public interface Hobby {}
public class Child extends Parent implements Work, Hobby {}